# # calss是类   定义一个对象  水water
# #  属性就是变量
# class Water:
#     # 高度   geight
#     height = 0
#     # 容积，------颜色，材质
#     cubage = 0
#     # 颜色
#     colour = 0
#     # 材质
#     texture = 0
#
#
# # def     自己self
#     def drink(self):
#         print(self.height, "美酒+咖啡，一又一杯")
#
#         # water  水的用处     水造成功的句子w = water()
#
#
# w = Water()
#
# w.colour = "绿色"
# w.texture = "金子"
# w.height = "关云长刷大刀，一刀又一刀"
#
# w.drink()   #  调用函数def，
#   # def函数必须在class类里面，  注意细节，别少括号

"""
人：
    属性：姓名，性别，年龄， 身高，体重
    行为：吃，学习，打游戏，睡觉，
封装：
    1、将属性进行隐藏   隐藏语法
    __属性   固定写法   已经隐藏了
    2、提供set/get用于间接赋值和取值
类：
    使用封装类写类
"""
import time


class Person:  # 创建对象  定义函数   定义属性
    # 对类的属性进行赋值
    # 吧属性进行隐藏，不对外开放，这种行为叫封装

    __username = ""
    __sex = ""
    __age = 0
    __high = 0.0
    __weight = 0
    __phone = ""
    # 提供setUsername方法  传入username值进行判断
#     如果用户输入为空，则是非法输入
#     否则是有效数据，对有效数据进行赋值
#     取值用get，返回return
#     给年龄赋值



    def setPhone(self):
        """
        条件限制：
        11位数
        不能  11   12   10
        """
        if len(self.__phone)==11:
            print("长度为11位")
        elif phone.startswith("10") or phone.startswith("11") or phone.startswith("12"):
            print("手机号必须是1开头的！")
        elif not phone.isdigit():  # isdigit判断数字里有没有其他字符的语法
            print("手机号不允许含有非数字字符")
        else:
            self.__phone = phone

        def getPhone(seif):
            return self.__phone

    def setUsername(self,username):
        if username == "":
            print("用户名不能为空，别瞎弄")
        else:
            self.__username = username

    def getUsername(self):
        return self.__username
    # 赋值
    def setAge(self,age):
        if age < 0 or age > 120:
            print("年龄非法！ 别瞎弄！")
        else:
            self.__age == age
    # 取值
    def getAae(self):
        return self.__age
    # 赋值
    def setSex(self,sex):
        if sex != "男" and  sex != "女":
            print("你是泰国来打酱油的吗")
        else:
            self.__sex == sex
    # 取值
    def getSex(self):
        return self.__sex
    #赋值
    def setHigh(self,high):
        if high > 20 or high > 0:
            print("你是巨人国的吗？或者小人国")
        else:
            self.__high == high
    # 取值
    def getHigh(self):
        return self.__high
    # 赋值
    def setWeight(self,weight):
        if weight < 1000 or weight < 0:
            print("输入非法！请重新输入")
        else:
            return self.__high
    # 取值
    def getWeight(self):
        return self.__weight



    def eat(self, __eatName, ):
        print(self.__username, "喜欢吃", eatName)

    def learn(self, subject, hour):
        print(self.__username, "正在研究", subject, "已经研究了", hour, "小时")

    def playGame(self, game):
        print(self.__username, "正在打大话西游外传", game, "[time]",end="")
        for i in range(500):
            print(".", end="")  # 每打印一个点需要换行
            time.sleep(0.01)
            print()

    def sleep(self, hour):
        print(self.__username, "已经睡了八百年", hour, "小时")

    def showMe(self):
        print("我叫",self.__username,"今年",self.__age,"岁"
              "身高",self.__high,"米",
              "体重",self.__weight,
              "我是",self.__sex)




# 创建人  毛坯人
p = Person()
#  开始装修
# 调用函数def
# p.username = "旺财"
# 调用隐藏属性往里面赋值
p.setUsername("旺财")
p.setHigh(8)

# p.high = 2.3
# p.age = 88
p.setAge(88)
# p.sex = "男"
p.setSex("女")
p.setWeight(990)
p.setPhone()


p.eat("牛魔王")
p.learn("达摩神功",150)
p.playGame("大话西游2")
p.sleep(100)

p.showMe()

